# -*- coding: utf-8 -*-
from zinx.ziface.irequest import IRequest
from abc import ABC, abstractmethod


class IRouter(ABC):
    """
    路由接口， 这里面路由是 使用框架者给该链接自定的 处理业务方法
    路由里的IRequest 则包含用该链接的链接信息和该链接的请求数据信息
    """

    @abstractmethod
    def PreHandle(self, request: IRequest):
        """
        在处理conn业务之前的钩子方法
        :param request:
        :return:
        """
        pass

    @abstractmethod
    def Handle(self, request: IRequest):
        """
        处理conn业务的方法
        :param request:
        :return:
        """
        pass

    @abstractmethod
    def PostHandle(self, request: IRequest):
        """
        处理conn业务之后的钩子方法
        :param request:
        :return:
        """
        pass
